package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.ToroVO;

public class ToroDAO {
	public Collection<ToroVO> buscarPorNombre(String nombre) {
		String query = "select RPtoro,idraza,nombre,RPpadre,RPmadre,apodo,canastilla,cantidad,precio,prec_total from toro_stock where nombre like '%"
				+ nombre + "%'";
		Collection<ToroVO> c = new ArrayList<ToroVO>();

		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				ToroVO vo = new ToroVO();
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setIdraza(rs.getInt("idraza"));
				vo.setNombre(rs.getString("nombre"));
				vo.setRPpadre(rs.getString("RPpadre"));
				vo.setRPmadre(rs.getString("RPmadre"));
				vo.setApodo(rs.getString("apodo"));
				vo.setCanastilla(rs.getInt("canastilla"));
				vo.setCantidad(rs.getInt("cantidad"));
				vo.setPrecio(rs.getInt("precio"));
				vo.setPrec_total(rs.getInt("prec_total"));
				c.add(vo);
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return c;
	}

	public ToroVO insertar(ToroVO vo) {
		System.out.println("Ingresando al insetar toro");
		String query = "insert into toro_stock(RPtoro,idraza,nombre,RPpadre,RPmadre,apodo,canastilla,cantidad,precio,prec_total) values ( ?,?,?,?,?,?,?,?,?,?)";
		System.out.println(query);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getRPtoro());
			stmt.setInt(2, vo.getIdraza());
			stmt.setString(3, vo.getNombre());
			stmt.setString(4, vo.getRPpadre());
			stmt.setString(5, vo.getRPmadre());
			stmt.setString(6, vo.getApodo());
			stmt.setInt(7,vo.getCanastilla());
			stmt.setInt(8,vo.getCantidad());
			stmt.setInt(9,vo.getPrecio());
			stmt.setInt(10,vo.getPrec_total());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
			return vo;
	}

	public ToroVO actualizar(ToroVO vo) {
		System.out.println("Ingresando al actualizar toro");
		String query = "update toro_stock set idraza=?,nombre=?,RPpadre=?,RPmadre=?,apodo=?,canastilla=?,cantidad=?,precio=?,prec_total=? where RPtoro=?";
		System.out.println(query);

		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);

			stmt.setInt(1, vo.getIdraza());
			stmt.setString(2, vo.getNombre());
			stmt.setString(3, vo.getRPpadre());
			stmt.setString(4, vo.getRPmadre());
			stmt.setString(5, vo.getApodo());
			stmt.setInt(6, vo.getCanastilla());
			stmt.setInt(7, vo.getCantidad());
			stmt.setInt(8, vo.getPrecio());
			stmt.setInt(9, vo.getPrec_total());
			stmt.setString(10, vo.getRPtoro());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return vo;
	}

	public void eliminar(String idToro) {
		String query = "DELETE FROM toro_stock WHERE RPtoro=?";
		// Table usuario
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setString(1, idToro);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar toro");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

	public ToroVO obtenerPorRPtoro(String RPtoro) {
		ToroVO vo = new ToroVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select RPtoro,idraza,nombre,RPpadre,RPmadre,apodo,canastilla,cantidad,precio,prec_total from toro_stock where RPtoro='"
							+ RPtoro + "'");
			if (rs.next()) {
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setIdraza(rs.getInt("idraza"));
				vo.setNombre(rs.getString("nombre"));
				vo.setRPpadre(rs.getString("RPpadre"));
				vo.setRPmadre(rs.getString("RPmadre"));
				vo.setApodo(rs.getString("apodo"));
				vo.setCanastilla(rs.getInt("canastilla"));
				vo.setCantidad(rs.getInt("cantidad"));
				vo.setPrecio(rs.getInt("precio"));
				vo.setPrec_total(rs.getInt("prec_total"));
	
	
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	// final

}
